package partThree;
/* 本类用于String类的入门案例*/
public class TestString {
    public static void main(String[] args) {
        // 1.创建String的方式一
        /* 1.一个类的对象通过什么方式创建，取决于这个类定义了哪些构造方法
         *  2.如果刚接触一个类不太清楚如何创建这个类的对象，可以查看api手册中，这个对象的构造函数
         *  3.查API手册得知：String有一个构造方法 String(char[] valus)*/

        // 1. 创建String的方式一
        char[] valus = {'a','b','c'};
        String s1 = new String(valus); //触发String的构造函数来创建对象
        String s2 = new String(valus); //触发String的构造函数来创建对象

        /* 4.String类底层重写了Object的toString()
         * 所以可以直接打印字符串的内容，而不是String对象的地址值*/
        System.out.println(s1);
        System.out.println(s2);

        // 2. 创建String的方式二
        /* 在实际开发中，一般都使用方式二，其效率较高，写法较为简便
         * 其数据存在堆中的常量池中，如果是第一次创建，会在堆中的常量池创建此字符串对象
         * 再次创建相同内容时，就不会在新建了，避免重复创建，浪费资源*/
        String s3 = "abc";
        String s4 = "abc";
        System.out.println(s3);
        System.out.println(s4);

        // 2. 创建String的方式三
        /*
        * 当然也可以使用方式三，方式三本质上也只是方式一的简化版本
        * 其和方式一一样，每次新建字符串都会新建一个对象
        */
        String s5 = new String("a,b,c,d,e");
        System.out.println(s5);
    }
}